home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SYMBOL / Symbol Generators / Randomize / gen-random-keep < prev    next >
Lisp/Scheme  |  1998-10-23  |  2KB  |  24 lines

  1. gen-random-keep seed keep-length keep-positions pattern possibilities
  2.  
  3. gen-random-keep generates random symbol patterns but enables you to control which keep-positions in a pattern are retained as they are. The possibilities are selected from a possibilities list which can be any symbol pattern. Keep-positions is a list of values that refer to the pattern, 1 referering to the first position etc. Keep-length determines the overall keep-pattern length - for example if you have keep-positions (1 3 5) and keep-length 8 then the overall keep-pattern will be (1 3 5 9 11 13 ..), but if the keep-length is 7 the keep-pattern will be (1 3 5 8 10 12 ..).
  4.  
  5. Note that if you want to use vector functions to calculate keep-positions you may do so without vector-to-list, since both vectors and lists are accepted, but use vector-round to be sure that the values are within reasonable limits. The positions may be expressed sequentially or non sequentially: (1 2 5 6) and (6 2 5 1) are equal. Example In the following example the positions (1 5 9) are kept as they are in the original pattern, and other positions are replaced with randomly picked symbols from the list (b c d). Next the keep-length is changed to 7.
  6.  
  7. (gen-random-keep 0.5 8 '(1 5) '(a a a a  a a a a  a a a a) '(b c d))
  8. --> (a c d d a d d b a c c d)
  9.  
  10. (gen-random-keep 0.5 7 '(1 5) '(a a a a  a a a a  a a a a) '(b c d))
  11. --> (a c d d a d d a b c c a)
  12.  
  13. (setq template (gen-fibonacci 6 'a 'b))
  14. --> (a b a a b a b a a b a a b a b a a b a b a)
  15.  
  16. (gen-random-keep 0.9 8 '(1 3 5) template '(a a a a b c = = = =))
  17. --> (a b a = b = c a a b a a b = = = a a a c a)
  18.  
  19. (gen-random-keep 0.4 16 
  20.     (vector-round 1 8 (gen-sin 2 1 8))
  21.     template
  22.     '(z x y))
  23. --> (a y z a b x x a x x y y z z z x a x x b a)
  24.